The invention relates to a method and system for operating memory devices, in particular solid state drives (SSD) of a data storage system, in particular a RAID (Redundant Array of Inexpensive Discs)-protected data storage system.
RAID is a data storage system primarily known in connection with a plurality of hard disk drives in which data is spread over multiple hard disc drives with or without introducing redundancy for data protection. There are different RAID architectures indicated by a number such as RAID0, RAID1, RAID2, etc. having different designs to increase data reliability and input/output performance. A RAID array of hard disc drives distributes data across multiple discs, however the disc array is seen by a computer or server connected to this array virtually as one single storage device. Accordingly RAID combines two or more physical hard disc drives into a single storage device by using either special hardware or software.
There may be different concepts embodied in a RAID system, in particular mirroring, striping and error correction. Mirroring includes copying of data to more than one hard disc. Striping of data includes splitting of data across more than one disc of the array. For error correction purposes redundant data is stored to allow errors to be detected and possibly corrected. Different RAID level architectures use one or more of these techniques depending on the requirements to increase data reliability or input/output performance of the storage system. The RAID data storage system is designed to improve reliability and availability of data ensuring that important data is available or to improve the access speed to data files, for example in a data storage system that delivers a large number of transactions for bank/trade's database system or video on demand programs to many viewers or customers.
The configuration of a RAID data storage system affects reliability and performance in different ways. By using more than one disc it is more likely that one disc will fail. This is addressed by using error checking so that the total data storage system can be made more reliable. Striping can be used to increase performance because it allows sequences of data to be read from multiple discs at the same time. Error checking typically slows down the data storage system as data needs to be read from several storage places and be compared with each other, but error checking increases the reliability and enables to provide a repair mechanism in case that one or several discs fail.
In a RAID 5 data storage architecture parity entities are distributed over different hard discs to increase performance. The distributed parity entity requires all drives or hard discs but one to be operative. If a drive failure occurs any subsequent read operations are calculated from the distributed parity entity such that the drive failure is masked from the user.
RAID 6 architectures provide a fail tolerance of two drive failures, i.e. the array continues to operate with up to two failed drives. A dual parity gives time to rebuild the array without being at risk that a further drive failure occurs before a rebuilt is complete.
In a conventional RAID storage system when there is a disk failure, a spare disk is used to rebuild the missing data. In a conventional RAID data storage system the spare disk which replaces a failed disk is used in the same manner as the remaining still operative disks of the data storage system.
A memory device can be embodied as flash device such as flash based solid state drive SSD or a flash based module which can store user data. Such solid state based non-volatile memory devices are faced with an endurance challenge. Endurance can be defined at the maximum number or writes/erases cycles that can be performed on each data block before it wears out. Wear leveling is a known technique for prolonging the service life of an erasable computer storage media such as a flash memory. In wear leveling, the write operations are distributed equally on blocks or devices of the storage space. Wear leveling is typically performed by a flash device controller based on a physical block address PBA.